www.gusucode.com > Matlab在化学工程中的应用 > Matlab在化学工程中的应用/实用化工计算机模拟-Matlab在化学工程中的应用/Examples/Chapter 5/CylindCat2.m

    function CylindCat2
% 计算圆柱状催化剂颗粒中进行一级反应的浓度分布
%
%   Author: HUANG Huajiang
%   Copyright 2003 UNILAB Research Center, 
%   East China University of Science and Technology, Shanghai, PRC
%   $Revision: 1.0 $  $Date: 2003/07/03 $

clear all
clc

% 1.问题定义及参数初始化
g = 'CylindCat2g';		% 定义求解域
b = 'CylindCat2b';		% 定义边界条件
c = 'x';
a = 0; 
f = '-9*x.*u';
% f = '-9*x.*u.*exp(3*(1-u)./(1+0.1*(1-u)))';

% 2.网格化(三角形网格划分及网格细化)
[p,e,t] = initmesh(g);		        % 网格初始化
[p,e,t] = refinemesh(g,p,e,t);		% 网格细化
p = jigglemesh(p,e,t);

% 3.绘制PDE三角形网格
pdemesh(p,e,t);

% 4.求解PDE
[u,res] = pdenonlin(b,p,e,t,c,a,f);
uxy(1) = tri2grid(p,t,u,0.394,0.285);
uxy(2) = tri2grid(p,t,u,0.394,0.765);
uxy(3) = tri2grid(p,t,u,0.803,0.285);
uxy(4) = tri2grid(p,t,u,0.803,0.765);

% 5.显示结果(包括绘图)
x = [0:0.01:1];     % x = 0~1

% 绘制y = 0.75时的c~x关系图
for i=1:length(x)
    ux(i) = tri2grid(p,t,u,x(i),0.75);
end
figure
plot(x,ux)
xlabel('x')
ylabel('c')
title('y = 0.75')

% 浓度分布图
figure
pdesurf(p,t,u)
colorbar
xlabel('x')
ylabel('y')
zlabel('c')

fprintf('在位置(r,z)=(0.394,0.285)、(0.394,0.765)、(0.803,0.285)、(0.803,0.765)上的浓度分别为:\n')
fprintf('\t%.3f',uxy)